The use of mobile devices, and in particular handheld mobile devices incorporating computing functions with cellular telephone and data communications (commonly referred to as smartphones) has grown rapidly in popularity in recent years. This rapid growth has been in part due to the ability of users to install software applications on such mobile devices to customize the operation of the mobile device, or to offer additional features or functionality desired by users. In response, there has been a growing interest to develop new software applications for mobile devices to provide for consumer demand.
However, the market for mobile devices is generally fragmented, with multiple types of devices built around different and incompatible mobile device platforms and offered by multiple manufacturers implementing multiple different operating systems and other key aspects differentiating one mobile device platform from another. As a result, the process of developing software applications designed to run natively on mobile devices has been challenging, as different versions of an application must generally be developed for each mobile device platform, each requiring specialized software development skills and detailed knowledge of specific development languages with a general lack of commonality and compatibility between common mobile device platforms. In addition, many popular mobile device platforms require specialized software development and/or compilation of applications for their mobile device platform to be completed on a particular type or configuration of computer system. For example, applications for Apple's iPhone™ require development on an Apple™ hardware architecture and Apple™ software configuration including developing an application in the Objective C language and compiling the application using multiple software components such as Xcode and the iPhone™ software development kit (SDK), for example. Similarly, applications for Blackberry™ and Windows Mobile™ mobile devices require development on a machine running Microsoft Windows™ and with a particular software configuration including multiple specific development and compiling software components and tools, while applications for the Android™, Nokia™, Symbian™, Palm Pre™ and W3C™ Widgets mobile device platforms may be developed on machines running several types of operating systems, but each require specific and differing software configurations for application development and compiling. Also, the process for compiling or building a mobile device application for a single particular platform, such as those noted above, has commonly required execution of multiple command line steps, adding to the time and effort required to build multiple versions of a particular application for use on individual mobile device platforms.
Further complicating the development of mobile device software applications for multiple mobile device platforms has been the differing application programming interface (API) features and specifications for accessing and utilizing many of the native features and services available on each different mobile device platform. For example, the APIs and required application function calls required to access native features such as geolocation (such as provided by a global positioning system receiver in a mobile device), vibration, accelerometer, contacts, and other native features in common mobile device platforms are all different, requiring individual and specialized knowledge for developing native software applications for each platform. Such specialized and incompatible software development requirements has further made developing software applications for multiple mobile device platforms time consuming and inefficient using existing techniques and approaches.
Accordingly, in view of the above, a need exists for a system and method to facilitate the development of native mobile device applications for multiple different and typically incompatible mobile device platforms.